<!-- 上传文件和图片组件 -->
<template>
	<view class="uploadFile" @click="upload">
		<image :src="uploadType === 'file' ?  '../../static/icon/fileUpload.png': '../../static/icon/imgUpload.png'" mode=""></image> 
		<slot></slot>
	</view>
</template>

<script setup>
import {defineProps,defineEmits} from 'vue'
const props = defineProps({
	uploadType:{
		type:String,
		required:true
	},
	deliveryReceiptList:{
		type:Array,
		default:()=>[]
	}
})
const emit =defineEmits(["uploadComplete"])

// 文件上传接口
const maxFileSize = 100 * 1024 * 1024
const upload = ()=>{
	switch(props.uploadType){
		case 'file':
	// #ifdef MP-WEIXIN
	// 在微信小程序环境中执行的代码
			uni.chooseMessageFile({
				  count: 1, // 默认 1，设置为 1 表示只能选择一个文件
				  type: 'file', // file：选择普通文件，image：选择图片文件
				success(res) {
				const tempFiles = res.tempFiles;
				const selectedFile = tempFiles[0];
				const fileExtension = selectedFile.name.split('.').pop().toLowerCase(); // 获取文件扩展名
				// 检查文件扩展名是否为图片类型
				if (['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'].includes(fileExtension)) {
				  uni.showToast({
					title: '不能选择图片文件',
					icon: 'none'
				  });
				  return;
				}
				emit("uploadComplete",selectedFile)
				// 处理选中的非图片文件
				// 在这里可以对文件进行进一步的处理，例如上传文件
				},
				fail(error) {
					console.log("提取文件失败")
				}
			})
	// #endif
	// #ifdef H5
		uni.chooseFile({
		  extension:props.deliveryReceiptList.length > 0 ?  props.deliveryReceiptList : ['.pdf','.ofd'],
		  count:1,
			success: function (res) {
				console.log("上传成功",res);
			       const tempFiles = res.tempFiles;
			          const validFiles = [];
					   for (const file of tempFiles) {
						  if (file.size > maxFileSize) {
							uni.showToast({
							  title: `文件大小不能超过 ${100} MB`,
							  icon: 'none'
							});
							continue;
						  }
						  validFiles.push({
							path: file.path,
							name: file.name,
							size: file.size,
							type: file.type === "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ? 'docx' : file.type,
							progress: 0
						  });
						}
				          if (validFiles.length > 0) {
							
				          emit("uploadComplete",validFiles,props.uploadType)
				          }
			}
		});
	// #endif
		break;
		case 'image':
		uni.chooseImage({
			count:1,
			success(res) {
			 const {tempFiles} = res
			 const size = tempFiles[0].size
			 if(size > maxFileSize ){
				 uni.showToast({
				   title: `文件大小不能超过 ${100} MB`,
				   icon: 'none'
				 });
			 }else{
				 emit("uploadComplete",res,props.uploadType)
			 }
			},
			fail(error){
				console.log("错误信息",error)
			}
		})
		break;
	}
}
</script>

<style lang="scss">
		// 文件上传按钮
		.uploadFile{
			height: 124rpx;
			background: #F5F9FF;
			border-radius: 8rpx;
			border: 1rpx solid #ECEFF4;
			display: flex;
			justify-content: center;
			align-items: center;
			font-weight: 400;
			font-size: 28rpx;
			color: #00041A;
			margin-top: 32rpx;
			>image{
				width: 36rpx;
				height: 36rpx;
				margin-right: 8rpx;
			}
		}
</style>